Skip to content

03 Docker 快速入门 - 部署 MySQL

首先,我们利用 Docker 来安装一个 MySQL 软件,大家可以对比一下之前传统的安装方式,看看哪个效率更高一些。

如果是利用传统方式部署 MySQL,大概的步骤有:

  • 搜索并下载 MySQL 安装包
  • 上传至 Linux 环境
  • 编译和配置环境
  • 安装

而使用 Docker 安装,仅仅需要一步即可。

TIP

Docker 安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程。

部署 MySQL

bash
 docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
8e0176adc18c: Pull complete
2d2c52718f65: Pull complete
d88d03ce139b: Pull complete
4a7d7f11aa1e: Pull complete
ce5949193e4c: Pull complete
f7f024dfb329: Pull complete
5fc3c840facc: Pull complete
509068e49488: Pull complete
cbc847bab598: Pull complete
942bef62a146: Pull complete
Digest: sha256:1773f3c7aa9522f0014d0ad2bbdaf597ea3b1643c64c8ccc2123c64afd8b82b1
Status: Downloaded newer image for mysql:latest
0b9bf3779b5036c83b9a390cef5c860ad2d8d32c2bb6f69f6a450b0031a09570
~
  • 执行命令后,Docker 做的第一件事情,是去自动搜索并下载了 MySQL,然后会自动运行 MySQL,我们完全不用插手,是不是非常方便。
  • 这种安装方式你完全不用考虑运行的操作系统环境,它不仅仅在 CentOS 系统是这样,在 Ubuntu 系统、macOS 系统、甚至是装了 WSL 的 Windows 下,都可以使用这条命令来安装 MySQL。
  • 不同操作系统下其安装包、运行环境是都不相同的!如果是手动安装,必须手动解决安装包不同、环境不同的、配置不同的问题!而使用 Docker,这些完全不用考虑。就是因为 Docker 会自动搜索并下载 MySQL。

注意

这里下载的不是安装包,而是镜像。镜像中不仅包含了 MySQL 本身,还包含了其运行所需要的环境、配置、系统级函数库。因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了。这套独立运行的隔离环境我们称为容器

TIP

  • 镜像:英文是 image
  • 容器:英文是 container

DockerHub

  • DockerHub:https://hub.docker.com/
  • DockerHub 是 Docker 官方提供的一个专门管理、存储镜像的网站,并对外开放了镜像上传、下载的权利。
  • Docker 官方提供了一些基础镜像,然后各大软件公司又在基础镜像基础上,制作了自家软件的镜像,全部都存放在这个网站。
  • 基本上我们常用的各种软件都能在这个网站上找到,我们甚至可以自己制作镜像上传上去。

DockerRegistry

  • DockerRegistry:https://docs.docker.com/registry/
  • 像 DockerHub 这种提供存储、管理 Docker 镜像的服务器,被称为 DockerRegistry,可以翻译为镜像仓库。
  • DockerHub 网站是官方仓库,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。

DockerHub 国内镜像

  • 官方仓库在国外,下载速度较慢,一般我们都会使用第三方仓库提供的镜像加速功能,提高下载速度。
  • 而企业内部的机密项目,往往会采用私有镜像仓库。
镜像加速器镜像加速器地址专属加速器?其它加速?
Docker 中国官方镜像https://registry.docker-cn.comDocker Hub已关闭
DaoCloud 镜像站https://docker.m.daocloud.ioDocker Hub、GCR、K8S、GHCR、Quay、NVCR 等
Azure 中国镜像https://dockerhub.azk8s.cn仅供内部访问Docker Hub、GCR、Quay
科大镜像站https://docker.mirrors.ustc.edu.cn仅供内部访问Docker Hub、GCR、Quay
阿里云https://<your_code>.mirror.aliyuncs.com需登录,系统分配Docker Hub
七牛云https://reg-mirror.qiniu.comDocker Hub、GCR、Quay
网易云https://hub-mirror.c.163.comDocker Hub
腾讯云https://mirror.ccs.tencentyun.com仅供内部访问Docker Hub
Docker 镜像代理https://dockerproxy.comDocker Hub、GCR、K8S、GHCR
百度云https://mirror.baidubce.comDocker Hub
南京大学镜像站https://docker.nju.edu.cnDocker Hub、GCR、GHCR、Quay、NVCR 等
上海交大镜像站https://docker.mirrors.sjtug.sjtu.edu.cnDocker Hub、GCR 等

WARNING

部分网友反馈以下镜像站存在未同步最新源镜像问题,请按需选用(评论区可考古)

  • 阿里云

镜像来源

  • 基于官方基础镜像自己制作
  • 直接去 DockerRegistry 下载

docker 运行命令示例

以下命令会运行一个 ubuntu 容器,以交互方式连接到本地命令行会话,并运行 /bin/bash .

bash
docker run -i -t ubuntu /bin/bash

运行该命令后,会出现以下情况(假设使用的是默认仓库配置):

  1. 如果本地没有 ubuntu 镜像,Docker 会从配置的仓库中提取它,就像手动运行 docker pull ubuntu 一样。
  2. Docker 会创建一个新容器,就像你手动运行 docker container create 命令一样。
  3. Docker 为容器分配了一个读写文件系统,作为其最后一层。这允许运行中的容器在其本地文件系统中创建或修改文件和目录。
  4. 由于您没有指定任何网络选项,因此 Docker 会创建一个网络接口,将容器连接到默认网络。这包括为容器分配一个 IP 地址。默认情况下,容器可以使用主机的网络连接连接到外部网络。
  5. Docker 启动容器并执行 /bin/bash 。由于容器是交互式运行的,并连接到终端(由于使用了 -i-t 标记),因此您可以使用键盘输入,同时 Docker 会将输出记录到终端。
  6. 运行 exit 命令终止 /bin/bash 命令时,容器会停止,但不会移除。您可以再次启动或删除它。

TIP

  • Docker 本身包含一个后台服务,我们可以利用 Docker 命令告诉 Docker 服务,帮助我们快速部署指定的应用。
  • Docker 服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。

总结

  • Docker 是做什么的?
    • Docker 可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用
  • 什么是镜像?
    • 将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像
  • 什么是容器?
    • 为每个镜像的应用进程创建的隔离运行环境就是容器
  • 什么是镜像仓库?
    • 存储和管理镜像的服务就是镜像仓库,
    • DockerHub 是目前最大的镜像仓库,其中包含各种常见的应用镜像